package com.alibaba.citrus.ots.platform.enhance.repository;


import com.alibaba.citrus.ots.platform.enhance.repository.model.DubboResult;
import com.alibaba.lattice2.epoch.sdk.model.Result;
import com.epoch.app.otsplatformenhance.sdo.OrganizationSDO;

import java.util.List;

/**
 * @author zhoubc
 * @description: TODO
 * @date 2021/9/3 14:57
 */
public interface OrganizationRepository {

    /**
     * 创建组织
     * @param sdo
     * @return
     */
    Result<String> createOrganization(OrganizationSDO sdo);

    /**
     * 编辑组织
     * @param sdo
     * @return
     */
    Result<Boolean> editOrganization(OrganizationSDO sdo);

    /**
     * 查询单个组织信息
     * @param organizationId
     * @return
     */
    OrganizationSDO getOrganizationById(String organizationId);

    /**
     * 获取所有组织
     * @param bizType
     * @param bizId
     * @return
     */
    List<OrganizationSDO> getAllOrganizationByBizTypeAndBizId(String bizType, String bizId);

    /**
     * 获取所有组织
     * @return
     */
    List<OrganizationSDO> getAllOrganization();

    /**
     * 查询组织下的直属子组织
     * @param parentId
     * @return
     */
    List<OrganizationSDO> getDirectChildOrganizations(String parentId,Integer status);

    /**
     * 根据类型查询组织
     * @param bizType
     * @param bizId
     * @param type
     * @return
     */
    List<OrganizationSDO> getOrganizationsByType(String bizType, String bizId, List<String> bizIds, String type, String parentId, List<String> parentIds);

    /**
     * 批量外部编码查询组织
     * @param outCodes
     * @return
     */
    List<OrganizationSDO> getOrganizationByOutCodes(List<String> outCodes);

    /**
     * 批量id查询组织
     * @param ids
     * @return
     */
    List<OrganizationSDO> getOrganizationByIds(List<String> ids);

}
